Data storage systems use file systems for organizing files stored on disks or electronic flash drives (EFDs). Each file system has an associated inode table, which stores block locations on the disks or EFDs where the files of the file system are stored. Each file or subdirectory has an inode number in the inode table. The inode number uniquely identifies the file in the file system. A file system may include multiple directories. A directory is a structure that provides mappings between the names of files and inode numbers. These mapping are stored in directory entries for the file, which, for any given file, store both the filename of the file and its inode number. When a client requests access to a file in a directory, the file system looks up the directory entry for the file and obtains the file's inode number. The file system can then access the contents of the file at the block locations designated by the file's inode.
When a client requests access to a file, the data storage system provides the client with an access handle that contains the inode number for the file. For example, in the Network File System (NFS), a file handle contains the inode number for the file, as well as a file system identifier and a versioning identifier that identifies the latest version of the file. The client uses the access handle for subsequent requests to access the file directly by inode number; in this way, the file can be accessed directly, without requiring a directory lookup.
At some point in time, an administrator of the storage system may need to migrate the file system from an initial file system to a target file system. In such a case, the newer file system typically uses different inode numbers for the files as were used in the initial file system. File handles obtained from the initial file system will thus not be able to locate file contents, as the inode numbers in the handles no longer point to the same files.
In order for a client to access files in the target file system using file handles, a conventional file system migration scheme involves rebooting the client. In this way, after rebooting, the client is able to receive new handles with valid inode numbers in the target file system. That is, when the client requests a new handle after migration, the operating system in which the target file system is installed looks up the file in the file's directory, locates the filename in the directory entry, and obtains the corresponding inode number. The data storage system then sends the client a new file handle with new the inode number as obtained from the directory entry.